package controller

import (
	"StrayAnimals/internal/service"
	"errors"
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

func DeleteAnimal(c *gin.Context) {
	animalId := c.Query("id")

	if animalId == "" {
		c.JSON(400, gin.H{
			"code":    400,
			"message": "动物 ID 不能为空",
		})
		return
	}

	animal, err := service.GetAnimalById(animalId)
	if err != nil {
		c.JSON(400, gin.H{
			"code":    400,
			"message": "数据库中没有该动物" + err.Error(),
		})
		return
	}

	// 删除动物
	err = service.DeleteAnimalByID(animalId, animal.IsAdopted)
	if err != nil {
		if errors.Is(err, gorm.ErrRecordNotFound) {
			// 如果是记录未找到错误
			c.JSON(403, gin.H{
				"code":    403,
				"message": "该动物不存在",
			})
		} else {
			c.JSON(500, gin.H{
				"code":    500,
				"message": "服务器内部错误，无法删除指定动物，请稍后再试；错误：" + err.Error(),
			})
		}
		return
	}

	c.JSON(200, gin.H{
		"code":    200,
		"message": "删除成功",
	})
}
